package cn.iocoder.yudao.module.member.service.auth;

import cn.iocoder.yudao.module.member.controller.app.auth.vo.AppAuthWechatLoginStatusRespVO;

import java.time.LocalDateTime;

/**
 * 会员微信登录状态管理 Service 接口
 * 
 * @author 芋道源码
 */
public interface MemberWechatLoginStatusService {

    /**
     * 保存登录状态为等待中
     *
     * @param state state参数
     */
    void savePendingStatus(String state);

    /**
     * 保存登录成功状态
     *
     * @param state state参数
     * @param userId 用户编号
     * @param accessToken 访问令牌
     * @param refreshToken 刷新令牌
     * @param expiresTime 过期时间
     * @param openid 社交用户openid
     */
    void saveSuccessStatus(String state, Long userId, String accessToken, String refreshToken, 
                          LocalDateTime expiresTime, String openid);

    /**
     * 保存登录失败状态
     *
     * @param state state参数
     * @param errorMsg 错误消息
     */
    void saveFailedStatus(String state, String errorMsg);

    /**
     * 获取登录状态
     *
     * @param state state参数
     * @return 登录状态，不存在返回null
     */
    AppAuthWechatLoginStatusRespVO getLoginStatus(String state);

    /**
     * 删除登录状态
     *
     * @param state state参数
     */
    void deleteLoginStatus(String state);

}